﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ServiceModel;
using System.Data;

/// <summary>
/// Summary description for CandidatosServices
/// </summary>

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class CandidatosServices : ICandidatosServices  
{
    public string ObtenSaludo()
    {
        string mensaje = "Bienvenido a cosea, WebService desarrollado por Víctor Ceja con framework 4.0, sql server 2008 Fecha: " +
            DateTime.Now.ToLongDateString () + " Hora :" + DateTime.Now.ToLongTimeString ();
        return mensaje;
    }

    public List<candidato> ObtenCandidatos()
    {
        List<candidato> result = new List<candidato>();
        //String connectionString = "Data Source=192.168.1.103,1433;Network Library=DBMSSOCN;Initial Catalog=GTS2011;User ID=sa;Password=vic1973;";
        String connectionString = "Data Source=localhost;Initial Catalog=cosea_directos;Persist Security Info=True;User ID=sa;Password=vic1973";
        //String connectionString = "Data Source=201.155.224.125;Initial Catalog=cosea_directos;Persist Security Info=True;User ID=sa;Password=vic1973";
        //CandidatosDataContext db = new CandidatosDataContext(connectionString);
        //try
        //{            
        //    List<spObtenCandidatosLinqResult> res = db.spObtenCandidatosLinq().ToList();

            
        //    foreach (var r in res)
        //    {
        //        candidato c = new candidato();
        //        c.Nombre = r.nombre1;
        //        c.SegundoNombre = r.nombre2;
        //        c.ApellidoPaterno = r.apellido1;
        //        c.ApellidoMaterno = r.apellido2;
        //        c.FechaNacimiento = (DateTime)r.fechanacimiento;
        //        c.FechaAlta = (DateTime)r.fechaalta;
        //        result.Add(c);
        //    }

        //}
        //catch (Exception ex)
        //{
        //    throw new Exception(ex.Message);
        //}
        //finally
        //{
        //    db = null;
        bdSQLServer bd = new bdSQLServer(connectionString);
        string strSQL = "exec spObtenEmpleadoWS ";
        try
        {
            bd.bdConecta();
            DataSet ds =  bd.dataSetConsulta(strSQL,"ws");
            if (ds.Tables["ws"].Rows.Count > 0)
            {
                candidato can;
                foreach (DataRow item in ds.Tables["ws"].Rows)
                {
                    can = new candidato();
                    can.IdEmpleado = item["IdEmpleado"].ToString();
                    can.NumerEmpleado = item["NumeroEmpleado"].ToString();
                    can.EmpresaAsginada = item["EmpresaAsignada"].ToString();
                    can.Nombre = item["Nombre1"].ToString();
                    can.SegundoNombre = item["Nombre2"].ToString();
                    can.ApellidoPaterno = item["Paterno"].ToString();
                    can.ApellidoMaterno = item["Materno"].ToString();
                    can.FechaNacimiento = item["FechaNacimiento"].ToString();
                    can.FechaIngreso = item["FechaIngreso"].ToString();
                    can.Turno = item["Turno"].ToString();
                    can.IdSolicitud = item["IdSolicitud"].ToString();
                    can.Rfc = item["Rfc"].ToString();
                    can.Curp = item["Curp"].ToString();
                    can.PuestoSolicitado = item["PuestoSolicitado"].ToString();
                    can.Sexo = item["Sexo"].ToString();
                    can.Estado = item["Estado"].ToString();
                    result.Add(can);
                }
            }
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
        finally
        {
            bd.bdCierra();
        }
        return result;
    }

    public List<Empleados> ObtenEmpleados()
    {
        String connectionString = "Data Source=localhost;Initial Catalog=cosea_directosa;Persist Security Info=True;User ID=sa;Password=vic1973";
        //String connectionString = "Data Source=201.155.224.125;Initial Catalog=cosea_directosa;Persist Security Info=True;User ID=sa;Password=vic1973";
        //String connectionString = "Data Source=201.155.224.125;Initial Catalog=DirectosProductivo;Persist Security Info=True;User ID=sa;Password=vic1973";
        List<Empleados> resultado = new List<Empleados>();

        bdSQLServer bd = new bdSQLServer(connectionString);
        //string strSQL = "exec spObtenEmpleadoWS ";
        //string strSQL = "select [Emp Number],[Estatus],[Last name],[2nd last name],[First name],[Departmento Efectivo],[IMSS],[CURP],[Sexo],[Civil],[Cumpleaños],[Education],[Phone],[Home Phone Number],ROUND([Daily Salary], 2) as [Daily Salary],[Address 1],[Address 2],[Zip],[Lugar Nacimiento],[RFC],ROUND([Monthly Salary], 2) AS [Monthly Salary] from datosdatamark";
        string strSQL = "select [Emp# Number] as [Emp Number],[Estatus],[Last name],[2nd last name],[First name],[Departmento Efectivo],[IMSS],[CURP],[Sexo], ";
        strSQL += " [Civil],[Cumpleaños],[Education],[Phone],[Home Phone Number],ROUND([Daily Salary], 2) as [Daily Salary],[Address 1],[Address 2], ";
        strSQL += " [Zip],[Lugar Nacimiento],[R#F#C#] as [RFC],ROUND([Monthly Salary], 2) AS [Monthly Salary],[Project Code],[Department ] from DataMark2 ";

        string strSQL2 = "select FechaIngreso from Empleado where NumeroEmpleado = '{0}'";

        string strSQL3 = "select e.NumeroEmpleado,e.IdEstadoEmpleado,es.Estado,s.Nombre1,s.Nombre2,s.Paterno,s.Materno,s.Imss,s.Curp,s.Sexo,s.EstadoCivil, ";
        strSQL3 += "s.FechaNacimiento,s.EscolaridadMaxima,s.Telefono,s.Telefono2,s.Celular,s.Domicilio,s.Colonia,s.CodigoPostal,s.LugarNacimiento, ";
        strSQL3 += "s.RFC,e.SalarioDiario,(e.SalarioDiario * 30.5) as salariomensual,e.FechaIngreso ";
        strSQL3 += "from Empleado e inner join SolicitudEmpleo s on e.IdSolicitud = s.IdSolicitud ";
        strSQL3 += "inner join EstadosEmpleado es on e.IdEstadoEmpleado = es.IdEstadoEmpleado where e.IdEmpleado = ";


        try
        {
            bd.bdConecta();
            DataSet ds = bd.dataSetConsulta(strSQL, "ws");
            if (ds.Tables["ws"].Rows.Count > 0)
            {
                string strConsultaSQL = "";
                Empleados emp;
                foreach (DataRow item in ds.Tables["ws"].Rows)
                {
                    emp = new Empleados();
                    string idEmp = item["Department "].ToString().Trim();
                    if (!idEmp.Equals(""))
                    {
                        strConsultaSQL = strSQL3 + idEmp;
                        //strSQL3 = string.Format(strSQL3, idEmp);
                        DataTable dtConsulta = bd.dataSetConsulta(strConsultaSQL, "consulta").Tables[0];
                        if (dtConsulta.Rows.Count > 0)
                        {
                            emp.numero_empleado = dtConsulta.Rows[0]["NumeroEmpleado"].ToString();
                            string strEstado = dtConsulta.Rows[0]["Estado"].ToString();
                            if (strEstado.ToUpper().Trim() == "SUSPENDIDO")
                                strEstado = "Activo";

                            if (strEstado.ToUpper().Trim() == "ACTIVO" || strEstado.ToUpper().Trim() == "SUSPENDIDO" || 
                                strEstado.ToUpper().Trim() == "BAJA")
                            {                                
                            
                                //emp.estatus = dtConsulta.Rows[0]["Estado"].ToString();
                                emp.estatus = strEstado;
                                //emp.apellido_paterno = item["Last name"].ToString(); //Cambio porque los datos los enviaron incorrectos o intercambiados
                                emp.nombre = dtConsulta.Rows[0]["Nombre1"].ToString();
                                emp.apellido_materno = dtConsulta.Rows[0]["materno"].ToString();
                                //emp.nombre = item["First name"].ToString().Trim();
                                emp.apellido_paterno = dtConsulta.Rows[0]["paterno"].ToString();
                                emp.fecha_contratacion = dtConsulta.Rows[0]["FechaIngreso"].ToString();

                                emp.nss = dtConsulta.Rows[0]["imss"].ToString();
                                emp.curp = dtConsulta.Rows[0]["Curp"].ToString();
                                emp.sexo = dtConsulta.Rows[0]["Sexo"].ToString();
                                emp.estado_civil = dtConsulta.Rows[0]["EstadoCivil"].ToString();
                                emp.fecha_nacimiento = DateTime.Parse(dtConsulta.Rows[0]["FechaNacimiento"].ToString()).ToString("dd-MM-yyyy");
                                emp.escolaridad = dtConsulta.Rows[0]["EscolaridadMaxima"].ToString();
                                emp.telefono_fijo = dtConsulta.Rows[0]["Telefono"].ToString();
                                emp.telefono_personal = dtConsulta.Rows[0]["Telefono2"].ToString();
                                emp.direccion = dtConsulta.Rows[0]["Domicilio"].ToString();
                                emp.colonia = dtConsulta.Rows[0]["Colonia"].ToString();
                                emp.codigo_postal = dtConsulta.Rows[0]["CodigoPostal"].ToString();
                                emp.ciudad = dtConsulta.Rows[0]["LugarNacimiento"].ToString();
                                emp.rfc = dtConsulta.Rows[0]["RFC"].ToString().ToUpper();
                                emp.sueldo_diario = dtConsulta.Rows[0]["SalarioDiario"].ToString();
                                emp.sueldo_mensual = dtConsulta.Rows[0]["salariomensual"].ToString();

                            }
                        }

                    }
                    else
                    {
                        DataTable dt = bd.dataSetConsulta(strSQL2, item["Emp Number"].ToString()).Tables[0];
                        //DataSet ds2 = bd.dataSetConsulta(strSQL2, item["Emp Number"].ToString());

                        string strEstado = item["Estatus"].ToString();
                        if (strEstado.ToUpper().Trim() == "ACTIVO" || strEstado.ToUpper().Trim() == "SUSPENDIDO" 
                            || strEstado.ToUpper().Trim() == "BAJA")
                        {
                            emp.numero_empleado = item["Emp Number"].ToString();
                            emp.estatus = strEstado.Trim();
                            //emp.apellido_paterno = item["Last name"].ToString(); //Cambio porque los datos los enviaron incorrectos o intercambiados
                            emp.nombre = item["Last name"].ToString();
                            emp.apellido_materno = item["2nd last name"].ToString();
                            //emp.nombre = item["First name"].ToString().Trim();
                            emp.apellido_paterno = item["First name"].ToString().Trim();

                            if (dt.Rows.Count > 0)
                                emp.fecha_contratacion = dt.Rows[0]["FechaIngreso"].ToString();
                            else
                                emp.fecha_contratacion = "";
                            emp.nss = item["IMSS"].ToString();
                            emp.curp = item["CURP"].ToString();
                            emp.sexo = item["Sexo"].ToString();
                            emp.estado_civil = item["Civil"].ToString();
                            emp.fecha_nacimiento = DateTime.Parse(item["Cumpleaños"].ToString()).ToString("dd-MM-yyyy");
                            emp.escolaridad = item["Education"].ToString();
                            emp.telefono_fijo = item["Phone"].ToString();
                            emp.telefono_personal = item["Home Phone Number"].ToString();
                            emp.direccion = item["Address 1"].ToString();
                            emp.colonia = item["Address 2"].ToString();
                            emp.codigo_postal = item["Zip"].ToString();
                            emp.ciudad = item["Lugar Nacimiento"].ToString();
                            emp.rfc = item["RFC"].ToString().ToUpper();
                            emp.sueldo_diario = item["Daily Salary"].ToString();
                            emp.sueldo_mensual = item["Monthly Salary"].ToString();
                        }
                    }
                    resultado.Add(emp);
                    
                }
            }
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
        finally
        {
            bd.bdCierra();
        }
        return resultado;
    }

}